//package com.youedata.modular.controller;
//
//import cn.stylefeng.roses.core.reqres.response.ResponseData;
//import com.alibaba.fastjson.JSON;
//import com.youedata.modular.entity.KeyInfo;
//import com.youedata.modular.enums.SuccessFlag;
//import com.youedata.modular.model.dto.CheckRequestCodeDTO;
//import com.youedata.modular.model.dto.GetUserInfoDTO;
//import com.youedata.modular.model.dto.UserInfoByOpenidDTO;
//import com.youedata.modular.service.IKeyInfoService;
//import com.youedata.util.ToolUtil;
//import com.youedata.util.sdkUtil;
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiOperation;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.*;
//
//import java.util.Map;
//
///**
// * 我的盐城校验控制器
// *
// * @author hao.yan
// * @date 2020-07-30 21:30:31
// */
//@Controller
//@Api(value = "/api", tags = "我的盐城校验控制器")
//@RequestMapping("/api")
//@Slf4j
//public class MyYanChengController {
//
//    @Value("${rest.GETINITCODE_URL}")
//    private String getInitCodeUrl;
//
//    @Value("${rest.GETAUTHCODE_URL}")
//    private String getAuthCodeUrl;
//
//    @Value("${rest.GETACCESSTOKEN_URL}")
//    private String getAccessTokenUrl;
//
//    @Value("${rest.REFRESHACCESSTOKEN_URL}")
//    private String refreshAccessTokenUrl;
//
//    @Value("${rest.CHECKACCESSTOKEN_URL}")
//    private String checkAccessTokenUrl;
//
//    @Value("${rest.CHECKREQUESTCODE_URL}")
//    private String checkRequestCodeUrl;
//
//    @Value("${rest.GETUSERINFO_URL}")
//    private String getUserInfoUrl;
//
//    @Autowired
//    private IKeyInfoService keyInfoService;
//
//
//    /**
//     * 获取initCode
//     *
//     * @author hao.yan
//     * @date 2020-07-30
//     */
//    @ResponseBody
//    @GetMapping("/getInitCode/{keyId}")
//    @ApiOperation(value = "获取initCode")
//    public ResponseData getInitCode(@PathVariable Integer keyId) {
//        ResponseData responseData = null;
//
//        KeyInfo keyInfo = keyInfoService.getById(keyId);
//        if (ToolUtil.isEmpty(keyInfo)) {
//            return ResponseData.error("查询不到key值！");
//        }
//
//        String resultJson = sdkUtil.getInitCode(getInitCodeUrl, keyInfo.getAppId(), keyInfo.getAppKey());
//        if (resultJson != null) {
//            Map resultMap = JSON.parseObject(resultJson, Map.class);
//            if (SuccessFlag.SUCCESS.getCode().equals(resultMap.get("code"))) {
//                responseData = ResponseData.success(resultMap.get("data"));
//            } else {
//                log.error(resultMap.get("msg").toString());
//                responseData = ResponseData.error(resultMap.get("msg").toString());
//            }
//        }
//        return responseData;
//    }
//
//
//    /**
//     * 校验RequestCode
//     *
//     * @author hao.yan
//     * @date 2020-07-30
//     */
//    @ResponseBody
//    @PostMapping("/checkRequestCode")
//    @ApiOperation(value = "校验RequestCode")
//    public ResponseData checkRequestCode(@RequestBody CheckRequestCodeDTO requestCodeDTO) {
//        ResponseData responseData = null;
//
//        String authCode = null;
//        String accessToken = null;
//
//        KeyInfo keyInfo = keyInfoService.getById(requestCodeDTO.getKeyId());
//        if (ToolUtil.isEmpty(keyInfo)) {
//            return ResponseData.error("查询不到key值！");
//        }
//
//
//        //获取authCode
//        String authCodeJson = sdkUtil.getAuthCode(getAuthCodeUrl, requestCodeDTO.getAppId(), keyInfo.getAppKey());
//        if (StringUtils.isNotEmpty(authCodeJson)) {
//            Map resultMap = JSON.parseObject(authCodeJson, Map.class);
//            if (SuccessFlag.SUCCESS.getCode().equals(resultMap.get("code"))) {
//                authCode = JSON.parseObject(resultMap.get("data").toString()).getString("authCode");
//                log.info("authcode=========>{}", authCode);
//            } else {
//                log.error(resultMap.get("msg").toString());
//                return ResponseData.error(resultMap.get("msg").toString());
//            }
//        }
//
//        //获取accesToken
//        String accesTokenJson = sdkUtil.getAccessToken(getAccessTokenUrl, requestCodeDTO.getAppId(), authCode);
//        if (StringUtils.isNotEmpty(accesTokenJson)) {
//            Map resultMap = JSON.parseObject(accesTokenJson, Map.class);
//            if (SuccessFlag.SUCCESS.getCode().equals(resultMap.get("code"))) {
//                accessToken = JSON.parseObject(resultMap.get("data").toString()).getString("accessToken");
//                log.info("accessToken=========>{}", accessToken);
//            } else {
//                log.error(resultMap.get("msg").toString());
//                return ResponseData.error(resultMap.get("msg").toString());
//            }
//        }
//
//        //校验RequestCode
//        String resultJson = sdkUtil.checkRequestCode(checkRequestCodeUrl, requestCodeDTO.getAppId(), accessToken, requestCodeDTO.getRequestCode());
//        if (resultJson != null) {
//            Map resultMap = JSON.parseObject(resultJson, Map.class);
//            if (SuccessFlag.SUCCESS.getCode().equals(resultMap.get("code"))) {
//                responseData = ResponseData.success(resultMap.get("data"));
//            } else {
//                responseData = ResponseData.error(resultMap.get("msg").toString());
//            }
//        }
//        return responseData;
//    }
//
//    /**
//     * 获取用户信息
//     *
//     * @author hao.yan
//     * @date 2020-07-30
//     */
//    @ResponseBody
//    @PostMapping("/getUserInfo")
//    @ApiOperation(value = "获取用户信息")
//    public ResponseData getUserByUserAccessToken(@RequestBody GetUserInfoDTO userInfoDTO) {
//        ResponseData responseData;
//        UserInfoByOpenidDTO userInfoByOpenidDTO = sdkUtil.getUserByUserAccessToken(getUserInfoUrl, userInfoDTO);
//
//        if (ToolUtil.isEmpty(userInfoByOpenidDTO)) {
//            log.error("获取用户信息失败！");
//            responseData = ResponseData.error("获取用户信息失败！");
//        } else {
//            responseData = ResponseData.success(userInfoByOpenidDTO);
//        }
//        return responseData;
//    }
//
//
//}
